//Define the namespace
Ext.ns('Ext.ux');
/**
 * @class Ext.ux.Loader
 * @author    Otavio Augusto R. Fernandes
 * @copyright (c) 2010, by Otavio Augusto R. Fernandes
 * @date      24. January 2010
 * @version   $Id: Ext.ux.Loader.js 50 2010-01-24 17:30:45Z oaugusts $
 * <p>Show a loader icon in a target.<p/>
 * @singleton
 */
Ext.ux.Loader = function(){

    return {
        /**
         * Inicializa um carregador para uma configuração
         */
        start : function(config){
            var defaultConfig = {
                loadingCls: 'app-loading',
                waitingText: 'Aguarde...'
            }

            //Aplica as configurações default
            Ext.applyIf(config, defaultConfig);

            if (config.sender){
                if (config.sender.title){
                   config.sender.originalText = config.sender.title;
                   config.sender.setTitle(config.waitingText);

                }else{
                   config.sender.originalText = config.sender.getText();
                   config.sender.setText(config.waitingText);
                }
                config.sender.originalIconCls = config.sender.iconCls;
                config.sender.setIconClass(config.loadingCls);
                config.sender.disable();
            }
            
        },

        /**
         * Para um carregador para uma configuração
         */
        stop : function(sender){

            if (sender){               
                if (sender.originalIconCls != undefined){
                    sender.setIconClass(sender.originalIconCls);                    
                }
                else
                    sender.setIconClass('');
                
                if (sender.title){
                    sender.setTitle(sender.originalText);
                }else{
                    sender.setText(sender.originalText);
                }
                
                delete(sender.originalText);
                sender.enable();
            }
        }
    };
}();